<?php
/**
 * huhaiqin,2025.2.5
 * 游戏模块任务接口
 */
namespace Game\Controller;
use Think\Controller;
use Game\Controller\GameBaseController;

class TaskController extends GameBaseController{

    /**
     * huhaiqin,2025.2.5
     * 获取任务列表接口
     * //请求参数
     *   token: string //用户token,
     *  //返回参数
     *  task_id_list: [] //任务id列表-每日从id库中随机
     */
    public function task_list(){

    }

    /**
     * huhaiqin,2025.2.5
     * 完成任务接口
     * //请求参数
     * task_id: int //任务id
     * progress: int //任务进度
     * //返回参数
     *  task_id: int //任务id
     *  progress: int //任务进度
     *  status: int //任务状态 0-未完成 1-已完成 2-已领取
     *  reward: [] //任务奖励
     */
    public function complete_task(){
        if(!I('task_id')){
            _apiReturn(0, '任务id不能为空');
            return;
      
        }
        $task_id = I('task_id');
        $progress = I('progress');
        if(!$progress){
            _apiReturn(0, '任务进度不能为空');
            return; 
        }
        $task = _get_config_table()->getTbDailyTask()->get($task_id);
        if(!$task){
            _apiReturn(0, '任务不存在');
            return;
        }
        // 验证是否虚假完成
        // 可以加上时间戳验证
        // $sign = hash_hmac('sha256', $task_id, C('VERIFY_SECRET_KEY'));
        // if($sign!= I('sign')){
        //     _apiReturn(0, '任务id不合法');
        //     return;
        // }
        $res = D('GameUser','Service')->complete_task($this->_uid, $task_id, $progress); 
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return;
        }
        _write_user_log($this->_uid, 'complete_task', $task_id);
        _apiReturn(1, '任务完成', ['task_info' => $res['data']['task_info'], 'user_info' => $this->_get_full_user_info()]);
    }

    /**
     * huhaiqin,2025.2.5
     * 领取任务奖励接口
     * //请求参数
     *   token: string //用户token,
     *   task_id: int //任务id
     *  //返回参数
     * backpack：{} //背包 key-道具ID value-道具数量 （可以全量，也可以只发数量发生改变的道具）
     */
    public function claim_task_reward(){
        if(!I('task_id')){
            _apiReturn(0, '任务id不能为空');
            return; 
        }
        $task_id = I('task_id');
        // 验证是否虚假完成
        // 可以加上时间戳验证
        // $sign = hash_hmac('sha256', $task_id, C('VERIFY_SECRET_KEY'));
        // if($sign != I('sign')){
        //     _apiReturn(0, '任务id不合法');
        //     return;
        // }

        $task = _get_config_table()->getTbDailyTask()->get($task_id);
        if(!$task){
            _apiReturn(0, '任务不存在');
            return;
        }
        $res = D('GameUser','Service')->claim_task_reward($this->_uid, $task_id);
        if(!$res['status']){
            _apiReturn(0, $res['msg']);
            return; 
        }
        _write_user_log($this->_uid, 'claim_task_reward', $task_id, $res['data']['reward_item_list']);
        _apiReturn(1, '任务奖励领取成功', ['reward_item_list' => $res['data']['reward_item_list'], 'user_info' => $this->_get_full_user_info()]);
    }
}